/*!

BlackRabbit - OpenSource IDE.
@author Edward Sarkisyan (edward.sarkisyan@gmail.com)
Use LGPL (http://www.gnu.org/copyleft/lesser.html)

*/

#ifndef PLUGININTERFACES_H
#define PLUGININTERFACES_H
#include <QtPlugin>
#include <QtGui>
#include "api/retpreview.h"


typedef enum
{
    UNKNOWN = 0,
    WIDGET = 1
} PLUGIN_TYPE;


class Plugin
{
public:
    virtual ~Plugin(){};
    /*!
      Returns plugin name
      */
    virtual QString name()=0;

    /*!
      Returns plugin associated to this plugin
      */
    virtual QPixmap icon(int,int)=0;

    /*!
      Возвращает определенный Ui виджет, если у плагина их несколько типов
      Returns plugin's widget associaced to <b>type</b>
      @param typе - plugin type
      @param parent - parent widget. None if not specified (=0)
      */
    virtual RetPreview* getPreviewWidget()=0;
    virtual RetPreview* preview()=0;

    /*!
      Returns plugin settings widget
      */
    virtual QWidget* settings()=0;
    virtual bool willNotify()=0;
private:
    /*!
      Plugin's main icon
      */
    QPixmap m_icon;
};

QT_BEGIN_NAMESPACE
Q_DECLARE_INTERFACE(Plugin,"SSC.BlackRabbit.Plugin/1.0")
QT_END_NAMESPACE



#endif // PLUGININTERFACES_H
